/**
 * Created by Jehuty on 16/12/2.
 */
$(function () {
    click_post_management();
    click_user_management();
    brandName();
    htmlText();
    search();
    addPost();
    editBtn();
    removeBtn();
    save_update();
    clearJump();
})

/*--------------------------------------------------------------------*/
/*点击边栏帖子管理加载帖子内容*/
function click_post_management() {
    $("#posts_manage").on("click",function () {
        /*添加flag表示当前在管理帖子*/
        $(".panel-heading").attr("edit-type","posts")
        /*改变表头内容*/
        $(".panel-heading span").text("Post Management");
        var $td = $("#post_table>thead>tr td");
        $td[0].innerText="serial number"
        $td[1].innerText="author"
        $td[2].innerText="title"
        $td[3].innerText="opertation"

        /*发起ajax请求*/
        ajax({
            data:{pageid:1,pagesize:50},
            callback:function (data) {
                edit("template_table",data,"html");
            }
        })
    }).trigger("click");
}

/*--------------------------------------------------------------------*/
/*点击边栏用户管理加载用户管理界面*/
function click_user_management() {
    $("#user_manage").on("click",function () {
        /*添加flag表示当前在管理帖子*/
        $(".panel-heading").attr("edit-type","users")
        /*改变表头内容*/
        $(".panel-heading span").text("User Management")
        var $td = $("#post_table>thead>tr td");
        $td[0].innerText="NickName"
        $td[1].innerText="UserName"
        $td[2].innerText="Password"
        $td[3].innerText="Operation"

        $.getJSON(myUrl.url10,function (data) {
            data={list:data}
            edit("template_usertable",data,"html");
        })
    })
}

/*--------------------------------------------------------------------*/
/*将用户名塞入brand标签*/
function brandName() {
    var loc = window.location.href;
    var usern = /\?un\=([\w\d\_\-]*)/.exec(loc);
    if(usern){
        usern = usern[1]
    }
    $("#navbar-brand").text(usern||"Back-Stage");

}

/*--------------------------------------------------------------------*/
/*搜索*/
function search() {
    $("#search-post").on("click",function () {
        mySwitch(
            function () {
                var data = {wd:$("#search-input").val()};
                ajax({
                    url:myUrl.url5,
                    data:data,
                    callback:function (data) {
                        edit("template_table",data,"html");
                    }
                })
            },
            function () {
                var data = parseInt($("#search-input").val());
                if(typeof data != "number"){
                    alertout("请输入id");
                }else{
                    $.getJSON(myUrl.url11+data,function (data) {
                        data={list:[data]};
                        edit("template_usertable",data,"html");
                    })
                }
            }
        )
    })
}

/*--------------------------------------------------------------------*/
/*添加按钮点击事件*/
function addPost() {
    $("#add_text").on("click",function () {
        $("#add-post").text("Save");
        mySwitch(setPostsEditType,setUsersEditType)
    })
}

/*--------------------------------------------------------------------*/
/*给每个编辑按钮添加事件*/
function editBtn() {
    $("#list_box").on("click",".btn-edit",function () {
        var $that = $(this);
       mySwitch(
           /*修改帖子的情况*/
           function () {
               /*设置弹框样式*/
               setPostsEditType();
               //获取帖子id
               var id = $that.parent().parent().attr("listid");
               //将弹框的提交按钮文字改为Update并加入自定义属性postId
               $("#add-post").text("Update").attr("postId",id);
               /*将查询的值赋值给弹框*/
               $.getJSON(myUrl.url7+id,
                   function (data) {
                       $("#add-title").val(data.data.title);
                       $("#add-content").html(data.data.content);
                   })
           },
           /*修改用户的情况*/
           function () {
               /*设置弹框样式*/
               setUsersEditType();
               //获取user的id
               var id = $that.parent().parent().attr("listid");
               //将弹框的提交按钮文字改为Update并加入自定义属性postId
               $("#add-post").text("Update").attr("postId",id);
               /*将查询的值赋值给弹框*/
               $.getJSON(myUrl.url11+id,function (data) {
                   $("#add-title").val(data.username);
                   $("#add-password").val(data.password);
                   $("#add-content").html(data.nickname);
               })
           }
       )
    })
}

/*--------------------------------------------------------------------*/
/*编辑内容时切换html或txt格式*/
function htmlText() {
    var container = $("#add-content");
    var tmp_content;
    $("#switch-html").on("click",function () {
        $(this).toggleClass("chosen");
        if($(this).hasClass("chosen")){
            tmp_content = container.html();
            container.text(tmp_content);
        }else{
            tmp_content=container.text();
            container.html(tmp_content);
        }
    })
}

/*--------------------------------------------------------------------*/
/*给每个删除按钮添加事件*/
function removeBtn() {
    $("#list_box").on("click",".btn-delete",function () {
        var id = $(this).parent().parent().attr("listid");
        $(".alert_module").attr("listid",id).stop().fadeIn();
    })
    /*notSure按钮*/
    $("#delete-notsure").on("click",function () {
        $(".alert_module").stop().fadeOut();
    })
    /*sure按钮*/
    $("#delete-sure").on("click",function () {
        var id = $(this).parent(".alert_module").attr("listid");
        mySwitch(
            /*如果是删除帖子*/
            function () {
                $.getJSON(myUrl.url9+id,
                    function (data) {
                        if(data.code==1){
                            $(".alert_module").stop().fadeOut(alertout("Deleted"));
                            $("#posts_manage").trigger("click");
                        }else{
                            $(".alert_module").stop().fadeOut(alertout("error"));
                        }
                    })
            },
            /*如果是删除user*/
            function () {
                $.getJSON(myUrl.url14+id,
                    function (data) {
                    if(data.code==1){
                        $(".alert_module").stop().fadeOut(alertout("Deleted"));
                        $("#user_manage").trigger("click");
                    }else{
                        $(".alert_module").stop().fadeOut(alertout("error"));
                    }
                })
            }
        )

    })
}

/*--------------------------------------------------------------------*/
/*封装ajax请求*/
function ajax(obj) {
    var defaultPara={
        url:obj.url||myUrl.url4,
        data:obj.data,
        type:obj.type||"get",
        dataType:obj.dataType||"json",
        success:function (data) {
            data = {
                list:data
            };
            obj.callback(data);
        }
    }
    $.ajax({
        url:defaultPara.url,
        data:defaultPara.data,
        type:defaultPara.type,
        dataType:defaultPara.dataType,
        timeout:3000,
        success:function (data) {
            defaultPara.success(data);
        },
        complete : function(XMLHttpRequest,status){ //请求完成后最终执行参数
            if(status=='timeout'){//超时,status还有success,error等值的情况
                ajax.abort();
                alertout("timeout");
            }
        }
    })
}

/*--------------------------------------------------------------------*/
/*模板函数*/
function edit(id,data,methods) {
    var html = template(id,data);
    if(methods=="html"){
        $("#list_box").html(html);
    }else if(methods == "append"){
        $("#list_box").append(html);
    }else if(methods == "prepend"){
        $("#list_box").prepend(html);
    }
}

/*--------------------------------------------------------------------*/
/*清空弹出框内容*/
function clearJump() {
    $("#editArea").on("hidden.bs.modal",function () {
        $("#add-title").val("");
        $("#add-content").html("");
    })
}

/*--------------------------------------------------------------------*/
/*save/update点击事件函数*/
function save_update() {
    $("#add-post").on("click",function () {
        mySwitch(posts_click,users_click);
    })

    /*如果是编辑帖子时运行的函数*/
    function posts_click() {
        var title = $.trim($("#add-title").val()),
            content = $.trim($("#add-content").html());
        var text = $("#add-post").text();
        var myurl;
        var mydata;
        var dataType = "json";

        /*如果是添加帖子*/
        if(text=="Save"){
            myurl = myUrl.url6//添加帖子的接口
            mydata = {title:title,content:content};
        }
        /*如果是修改帖子*/
        if(text=="Update"){
            dataType = "json";
            myurl = myUrl.url8;//修改帖子的接口
            var myid = parseInt($("#add-post").attr("postId"));
            mydata = {title:title,content:content,id:myid};
        }
        /*如果title和content有值*/
        if(title&&content){
            ajax({
                url:myurl,
                type:"post",
                data:mydata,
                dataType:dataType,
                callback:function (data) {
                    /*如果添加成功返回1*/
                    if(data.list.code==1){
                        $("#posts_manage").trigger("click");
                        $("#editArea").modal("toggle");
                        alertout("Success");
                    }
                }
            })
        }
        return;
    };

    /*如果是编辑用户时运行的函数*/
    function users_click() {
        var username = $.trim($("#add-title").val()),
            password = $.trim($("#add-password").val()),
            nickname = content = $.trim($("#add-content").html()),
            text = $("#add-post").text(),
            myurl,
            mydata;
        /*判断输入是否有值*/
        if(username&&password&&nickname){
            /*如果是添加用户*/
            if(text=="Save"){
                myurl = myUrl.url12;
                mydata = {username:username,password:password,nickname:nickname};
            }
            /*如果是修改用户*/
            if(text=="Update"){
                var myid = parseInt($("#add-post").attr("postId"));
                myurl = myUrl.url13+myid;
                mydata = {username:username,password:password,nickname:nickname}
            }
            ajax({
                url:myurl,
                type:"post",
                data:mydata,
                callback:function (data) {
                    if(data.list.code===1){
                        $("#user_manage").trigger("click");
                        $("#editArea").modal("toggle");
                        alertout("Success");
                    }
                }
            })
        }
        return;
    }
}

/*--------------------------------------------------------------------*/
/*弹出框*/
function alertout(text) {
    $(".alert_module2").find(".msg").text(text)
        .end().stop().fadeIn().delay(600).fadeOut();
}

/*--------------------------------------------------------------------*/
/*封装switch函数,用来判断是用户管理还是帖子管理*/
function mySwitch(fn1,fn2) {
    switch ($(".panel-heading").attr("edit-type")){
        case "posts":fn1();break;
        case "users":fn2();break;
        default:alertout("error");
    }
}

/*--------------------------------------------------------------------*/
/*将编辑框设置为编辑帖子样式*/
function setPostsEditType() {
    $("#myModalLabel").text("Edit Posts");
    $("#add-title-lable").text("Title");
    $("#add-content-lable").text("Content");
    $(".modal-body>.form-group:eq(1)").hide();//将输入用户密码模块隐藏
    $("#add-content").show().removeClass("users");//编辑框恢复内容编辑样式
    /**/
    /*将html切换标签显示*/
    $("#switch-html").show();//显示html转换按钮
}

/*--------------------------------------------------------------------*/
/*将编辑框设置为编辑帖子样式*/
function setUsersEditType() {
    $("#myModalLabel").text("Edit Users");
    $("#add-title-lable").text("UserName");
    $(".modal-body>.form-group:eq(1)").show();//显示输入密码模块
    $("#add-content").show().addClass("users");//设置编辑框为添加密码样式
    $("#add-content-lable").text("NickName");

    /*将html切换标签隐藏*/
    $("#switch-html").hide();
}